home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / snip9503 / fptr_add.c < prev    next >
Text File  |  1995-03-14  |  773b  |  42 lines

  1. /*
  2. **  FPTR_ADD.C
  3. **
  4. **  Add any add any value to a far pointer and returns the result as a
  5. **  normalized far pointer.
  6. **
  7. **  Public Domain by Soleil Lapierre
  8. */
  9.  
  10. #if defined(__WATCOMC__)
  11.  #include <i86.h>
  12. #else
  13.  #include <dos.h>
  14. #endif
  15.  
  16. #ifdef __TURBOC__
  17.  #define FAR far
  18. #else
  19.  #define FAR _far
  20. #endif
  21.  
  22. #ifndef MK_FP
  23.  #define MK_FP(seg,offset) \
  24.         ((void FAR *)(((unsigned long)(seg)<<16) | (unsigned)(offset)))
  25. #endif
  26.  
  27.  
  28. char FAR *addptr (char FAR *p, unsigned long num)
  29. {
  30.       unsigned seg,off;
  31.  
  32.       seg = FP_SEG(p); off = FP_OFF(p);
  33.       seg += off>>4;   off &= 0x000F;
  34.  
  35.       off += (unsigned)(num&0x0000000fL);
  36.  
  37.       seg += off>>4;   off &= 0x000F;
  38.       seg += (unsigned)num>>4;
  39.  
  40.       return(MK_FP(seg,off));
  41. }
  42.